package entities;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="Livro")
public abstract class Livro {

	/*
 isbn            varchar(15)                    NO       UNI     (null)                     
 tituloLivro     varchar(100)                   NO       UNI     (null)                     
 idEditora       int(10) unsigned               NO       MUL     (null)                     
 idAutor         int(10) unsigned               NO       MUL     (null)                     
 idGenero        int(10) unsigned               YES      MUL     (null)                     
 pags            int(10) unsigned               NO               (null)                     
 valor           double unsigned                NO               (null)                     
 dtCompra        date                           NO               (null)                     
 lido            enum('S','N')                  NO               (null)                     
 descricaoLivro  varchar(100)                   YES              (null)                     
 idColecao       int(10)                        YES      MUL     (null)                     
 nota            enum('1','2','3','4','5','6')  YES              (null)                     

	 * */
	
	
	@Id 
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "idLivro", length = 10)
	private int id;
	
	@Column(name = "isbn", nullable = false, length = 15)
	private String isbn;
	
	@Column(name = "tituloLivro", nullable = false, length = 100)
	private String titulo;
	
	@ManyToOne(targetEntity = EditoraEntity.class, fetch = FetchType.LAZY)
	private EditoraEntity editora;
	
	@ManyToOne(targetEntity = GeneroEntity.class, fetch = FetchType.LAZY)
	private GeneroEntity genero;
	
	private int pags;
	
	private double valor;
	
	
	private Date dataCompra;
	
	private String descricaoLivro;
	
	private Colecao colecao;
	
	private Nota nota;
	
	private enum lido {
		S, N
	};

	public Livro() {
		
	}

	public int getId() {
		return id;
	}

	public String getIsbn() {
		return isbn;
	}

	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public Editora getEditora() {
		return editora;
	}

	public void setEditora(EditoraEntity editora) {
		this.editora = editora;
	}

	public Genero getGenero() {
		return genero;
	}

	public void setGenero(GeneroEntity genero) {
		this.genero = genero;
	}

	public int getPags() {
		return pags;
	}

	public void setPags(int pags) {
		this.pags = pags;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	public Date getDataCompra() {
		return dataCompra;
	}

	public void setDataCompra(Date dataCompra) {
		this.dataCompra = dataCompra;
	}

	public String getDescricaoLivro() {
		return descricaoLivro;
	}

	public void setDescricaoLivro(String descricaoLivro) {
		this.descricaoLivro = descricaoLivro;
	}

	public Colecao getColecao() {
		return colecao;
	}

	public void setColecao(Colecao colecao) {
		this.colecao = colecao;
	}

	public Nota getNota() {
		return nota;
	}

	public void setNota(Nota nota) {
		this.nota = nota;
	}
	
	
	
	
}
